package utils.bean;

import java.util.Collection;
import java.util.Map;

import utils.test.Assert;

/**
 * 对象工具包
 * @author 曹炳俊
 */
public class ObjectUtils {
	private ObjectUtils() {
	}
	
	/**
	 * 对象非空
	 * @param o
	 */
	public static boolean isNotNull(Object o){
		if (o == null) {
			return false;
		}
		return true;
	}
	
	/**
	 * 对象为空
	 * @param o
	 */
	public static boolean isNull(Object o){
		return !isNotNull(o);
	}
	
	/**
	 * 两个对象相等
	 * @param o1
	 * @param o2
	 * @param assertString
	 */
	public static boolean isEquals(Object o1,Object o2){
		Assert.isNotNull(o1, "不能传入空对象");
		return o1.equals(o2);
	}
	
	/**
	 * 两个对象不相等
	 * @param o1
	 * @param o2
	 * @param assertString
	 */
	public static boolean isNotEquals(Object o1,Object o2){
		Assert.isNotNull(o1, "不能传入空对象");
		return !o1.equals(o2);
	}
	
	/**
	 * 两个数值相等
	 * @param o1
	 * @param o2
	 * @return
	 */
	public static boolean isEquals(int o1,int o2){
		return o1==o2;
	}
	
	/**
	 * 两个数值不相等
	 * @param o1
	 * @param o2
	 * @return
	 */
	public static boolean isNotEquals(int o1,int o2){
		return !isEquals(o1, o2);
	}
	
	/**
	 * 数组有长度
	 * @param arr
	 * @param assertMsg
	 */
	public static boolean hasLength(Object[] arr){
		return (arr == null || arr.length == 0) ? false : true;
	}
	
	/**
	 * 数组无长度
	 * 空或长度为0都表示无长度
	 * @param arr
	 * @param assertMsg
	 */
	public static boolean hasNotLength(Object[] arr){
		return !hasLength(arr);
	}
	
	/**
	 * 集合有长度
	 * @param c
	 * @param assertMsg
	 */
	public static boolean hasLength(Collection<?> c){
		return (c == null || c.isEmpty()) ? false : true;
	}
	
	/**
	 * 集合无长度
	 * @param c
	 * @param assertMsg
	 */
	public static boolean hasNotLength(Collection<?> c){
		return !hasLength(c);
	}
	
	/**
	 * Map有长度
	 * @param m
	 * @param assertMsg
	 */
	public static boolean hasLength(Map<?,?> m){
		return (m == null || m.size() < 1) ? false : true;
	}
	
	/**
	 * Map有长度
	 * @param m
	 * @param assertMsg
	 */
	public static boolean hasNotLength(Map<?,?> m){
		return !hasLength(m);
	}
}
